package services.common;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import models.common.bean.UserCreditDebtBean;
import models.common.bean.UserCreditDebtNoBean;
import models.common.entity.t_user_credit;
import models.common.entity.t_user_credit_detail;
import services.base.BaseService;

import common.utils.Factory;
import common.utils.PageBean;

import daos.common.UserCreditDetailDao;

/**
 * 信用额度申请service
 * 
 * @author fanghanyong
 * @version 2018-01-11 上午11:00:00
 */
public class UserCreditDetailService extends BaseService<t_user_credit_detail> {

	protected UserCreditDetailDao userCreditDetailDao = Factory
			.getDao(UserCreditDetailDao.class);

	public UserCreditDetailService() {
		userCreditDetailDao = Factory.getDao(UserCreditDetailDao.class);
		super.basedao = this.userCreditDetailDao;
	}

	/**
	 * 
	 * 更新数据
	 * 
	 * @param t
	 * @return
	 * @author fanghanyong
	 * @version 2018-01-11
	 */
	public boolean save(t_user_credit_detail t) {
		return userCreditDetailDao.save(t);
	}

	/**
	 * 更新授信额度的审核状态
	 * 
	 * @param id
	 * @param status
	 * @return
	 * 
	 * @author fanghanyong
	 * @createDate 2018年01月11日
	 * 
	 */
	public int updateById(long id, int status) {

		return userCreditDetailDao.updateById(id, status);
	}

	/**
	 * 分页查询 查询放款人对应的申请明细列表
	 * 
	 * @param currPage
	 * @param pageSize
	 * @param userId
	 * @return
	 * 
	 * @author fanghanyong
	 * @createDate 2018年01月11日
	 * 
	 */
	public PageBean<t_user_credit_detail> pageOfUserCreditDetail(int currPage,
			int pageSize, long userId) {

		return userCreditDetailDao.pageOfUserCreditDetail(currPage, pageSize,
				userId);
	}

	/**
	 * 分页查询 查询放款人对应的申请明细列表
	 * 
	 * @param currPage
	 * @param pageSize
	 * @param lenderId
	 * @return
	 * 
	 * @author fanghanyong
	 * @createDate 2018年01月11日
	 * 
	 */
	public PageBean<t_user_credit_detail> pageOfUserCreditDetailByLenderid(
			int currPage, int pageSize, long lenderId) {

		return userCreditDetailDao.pageOfUserCreditDetailByLenderId(currPage,
				pageSize, lenderId);
	}

	/**
	 * 分页查询 查询放款人对应的申请明细列表
	 * 
	 * @param currPage
	 * @param pageSize
	 * @param creditLimitId
	 * @return
	 * 
	 * @author fanghanyong
	 * @createDate 2018年01月11日
	 * 
	 */
	public PageBean<t_user_credit_detail> pageOfUserCreditDetailByCreditLimitId(
			int currPage, int pageSize, long creditLimitId) {

		return userCreditDetailDao.pageOfUserCreditDetailByLenderId(currPage,
				pageSize, creditLimitId);
	}

	/**
	 * 查询授信额度明细表的持有人的总额度
	 * 
	 * @param lenderId
	 *            放款人id
	 * @param creditLimitId
	 *            授信额度表t_user_credit的id
	 * @param credit_granting_code
	 *            用户授信id
	 * @return
	 * @author fanghanyong
	 * @createDate 2018年01月20日
	 */
	public List<t_user_credit> findByCreditIdLenderId(long lenderId,
			long creditLimitId, String credit_granting_code) {
		return userCreditDetailDao.findByCreditIdLenderId(lenderId,
				creditLimitId, credit_granting_code);
	}

	/**
	 * 查询授信额度明细表的持有人流水额度
	 * 
	 * @param lenderId
	 *            放款人id
	 * @param creditLimitId
	 *            授信额度表t_user_credit的id
	 * @param applyUserId
	 *            融通人
	 * @param credit_granting_code
	 *            授信申请编号
	 * @return
	 * @author fanghanyong
	 * @createDate 2018年01月21日
	 */
	public List<UserCreditDebtNoBean> findByUserDetail(long lenderId,
			long creditLimitId, long applyUserId, String credit_granting_code) {
		return userCreditDetailDao.findByUserDetail(lenderId, creditLimitId,
				applyUserId, credit_granting_code);
	}

	/**
	 * 分页查询 用户授信额度明细
	 * 
	 * @param currPage
	 * @param pageSize
	 * @param creditId
	 *            授信申请id
	 * @param lenderId
	 *            放款人id
	 * @param applyUserId
	 *            融通人id
	 * @param applyName
	 *            融通人名称
	 * @param leanderName
	 *            放款人名称
	 * @param credit_granting_code
	 *            授信编号
	 * @param service_order_no
	 *            业务流水号
	 * @param creditType
	 *            查询类型
	 * @return
	 * @author fanghanyong
	 * @createDate 2018年01月22日
	 */
	public PageBean<t_user_credit_detail> pageOfUserCreditDetail(int currPage,
			int pageSize, long lenderId, long creditId, long applyUserId,
			String applyName, String leanderName, String credit_granting_code,
			String service_order_no,int creditType) {

		return userCreditDetailDao.pageOfUserCreditDetail(currPage, pageSize,
				lenderId, creditId, applyUserId, applyName, leanderName,
				credit_granting_code, service_order_no,creditType);
	}

	/**
	 * 用户授信额度明细-总金额
	 * 
	 * @param creditId
	 *            授信申请id
	 * @param lenderId
	 *            放款人id
	 * @param applyUserId
	 *            融通人id
	 * @param applyName
	 *            融通人名称
	 * @param leanderName
	 *            放款人名称
	 * @param credit_granting_code
	 *            授信编号
	 * @param service_order_no
	 *            业务流水号
	 * @param creditType
	 *            查询类型
	 * @return
	 * @author fanghanyong
	 * @createDate 2018年01月22日
	 */
	public Map<String, Object> totalUserCreditDetail(long lenderId,
			long creditId, long applyUserId, String applyName,
			String leanderName, String credit_granting_code,
			String service_order_no, int creditType) {

		return userCreditDetailDao.totalUserCreditDetail(lenderId, creditId,
				applyUserId, applyName, leanderName, credit_granting_code,
				service_order_no, creditType);
	}
	
	/**
	 * 根据用户授信额度表id查询 授信额度
	 * 
	 * @param findByCreditLimitId
	 *            用户授信额度表id
	 * @return
	 * @author fanghanyong
	 * @version 2018-2-6
	 */
	public List<t_user_credit_detail> findByCreditLimitId(long creditLimitId) {
		return findListByColumn(" credit_limit_id = ? ", creditLimitId);
	}

}
